perm filename KEDIT.SAI[KI,ALS] blob sn#100467 filedate 1974-05-03 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00004 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN "EDIT"
C00009 00003	OUTSTR(
C00012 00004	  WHILE TRUE DO BEGIN "NEWN"
C00015 ENDMK
C⊗;
BEGIN "EDIT"
DEFINE ⊂="COMMENT",CR="'15",LF="'12", CRLF="CR&LF",TB="'11";
REQUIRE "DPYSUB.HDR[1,PDQ]" SOURCE_FILE;
REQUIRE "KPLAY.REL[KI,ALS]" LOAD_MODULE;
REQUIRE "FIXUPA.REL[X,ALS]" LIBRARY;
REQUIRE "IO.REL[X,ALS]" LIBRARY;
REQUIRE "SUIO.REL[X,ALS]" LIBRARY;
REQUIRE "LIB.REL[NET,NJM]" LIBRARY;
EXTERNAL PROCEDURE KPLAY;
INTEGER ARRAY DPYBUF[0:8192];
INTEGER ARRAY DATA[0:511];
INTEGER ARRAY NAMES[0:100];
INTEGER ARRAY DUMMY[1:2];
INTERNAL INTEGER ARRAY NAME[0:5];
INTEGER CHAN1,CHAN2,CHAN3,CHAN4,
    NEW,I,J,K,L,V,LP,EOF1,EOF2,EOF3,EOF4,PP,SEGNAM,POINTX,PT0,PT1,PT2;
INTEGER ARRAY PT[0:8];
STRING READ,READ2,READ3,NEWNAM;
BOOLEAN ER;
LABEL STOPP;

PROCEDURE SAY;
BEGIN "SAY"

INTEGER I,J;
STRING READ2,READ3;

READ3←"";
FOR I←0 STEP 1 UNTIL 4 DO BEGIN
  FOR J←1 STEP 1 UNTIL 5 DO BEGIN
    READ3←READ3&READ[1 TO 1];
    READ←READ[2 TO 20];
    END;
  NAME[I]←CVASC(READ3);
  READ3←"";
  END;

KPLAY;

END "SAY";


PROCEDURE SHUFFLE;
BEGIN "SHUF"
INTEGER I,J,K;

AIVECT(-640,386);
I←DPYPTR-PT1;		⊂ Words to save;
J←PT1-PT0;		⊂ Words to overwrite;
for k←1 step 1 until i do dpybuf[k+3]←dpybuf[k+3+j];
for k←i+1 step 1 until j+1 do dpybuf[k+3]←1;
PT1←DPYPTR←PT0+I;
END "SHUF";


PROCEDURE PLOT;
BEGIN "PLOT"
INTEGER I,J,K,L,JP,LP,II,JJ,AA,BB;

WHILE EOF1=0 DO BEGIN "LOOP1"
  PTOCHW(0,'14127); ⊂ MAKE THE WHO LINE GO AWAY;
  TYPLOC(-320,-512); DPYSET(DPYBUF); 
  AIVECT(-640,448); PT0←DPYPTR;
  CLOSE(CHAN3); OPEN(CHAN3,"DSK",'10,0,2,0,0,0);
  ENTER(CHAN3,"TMP1.TMP",0); READ←"TMP1.TMP";
  FOR I←0 STEP 1 UNTIL 5 DO BEGIN
    RIVECT(0,-JP); DPYSST(CVS(I)); RIVECT(0,JP);
    FOR J←1 STEP 1 UNTIL 5 DO BEGIN
      FOR K←0 STEP 1 UNTIL 511 DO DATA[K]←0;
      IF EOF1=0 THEN  ARRYIN(CHAN1,DATA[0],512);
      ARRYOUT(CHAN3,DATA[0],512);
      FOR K←0 STEP 2 UNTIL 510 DO BEGIN
        L←LDB(POINT(12,DATA[K],11)); IF L>2047 THEN L←L-4096; L←L%16;
        LP←L-JP; RVECT(1,LP); JP←L;
        END;
      END;
    RIVECT(-647,-LP); RIVECT(-648,-128);
    PT[I]←DPYPTR;
    END;

  RIVECT(0,50);  DPYSST("0");
  FOR I←1 STEP 1 UNTIL 5 DO BEGIN
    RIVECT(225,0); DPYSST("."&CVS(I)); END;
  DPYOUT(0); ⊂ PTOCHW(0,'10120);
  OUTSTR("Portion shown says-"&CRLF);
  READ←"TMP1.TMP";
  CLOSE(CHAN3);  SAY;

  WHILE TRUE DO BEGIN "SAVE"
    OUTSTR("Start saving at (space for none, CR for all)  ");
    IF (READ2←INCHWL)="" THEN BEGIN AA←0; BB←30; END

    ELSE IF READ2=" " THEN AA←BB←0
    ELSE BEGIN READ3←READ2[1 TO 1]; READ2←READ2[3 TO 3];
      AA←(CVD(READ3))*5+CVD(READ2);
      OUTSTR("Save to (CR if to 5:5) ");
      READ2←INCHWL;
      IF READ2="" THEN READ2←"5.5";
      BB←(CVD(READ2[1 TO 1]))*5+CVD(READ2[3 TO 3]); END;
    outstr("AA set at "&cvs(AA)&"  BB set at "&CVS(BB)&TB);
    IF BB≠0 THEN BEGIN "BBLOOP"
      RELEASE(CHAN3);
      OPEN(CHAN3,"DSK",'10,2,0,0,0,EOF3);
      LOOKUP(CHAN3,"TMP1.TMP",ER);
      IF AA≠0  THEN BEGIN
        FOR I←0 STEP 1 UNTIL AA-1 DO
        IF EOF3=0 THEN ARRYIN(CHAN3,DATA[0],512)
          ELSE FOR K←0 STEP 1 UNTIL 511 DO DATA[0]←0;
        OUTSTR("unneeded portions discarded"&crlf);
        END;
      FOR I←AA STEP 1 UNTIL BB-1 DO BEGIN
        IF EOF3≠0 THEN DONE "SAVE";
        FOR K←0 STEP 1 UNTIL 511 DO DATA[K]←0;
        ARRYIN(CHAN3,DATA[0],512);
        ARRYOUT(CHAN4,DATA[0],512);
        END;
      END "BBLOOP" ELSE OUTSTR("Nothing saved"&CRLF);
      IF (BB≥29)∨(BB=0) THEN DONE "SAVE" ELSE
        OUTSTR("You may append some more if you wish"&CRLF);
    END "SAVE";
  IF EOF1≠0 THEN BEGIN CLOSE(CHAN4); DONE "LOOP1"; END
    ELSE BEGIN OUTSTR("DO you want more (CR if yes, space if no) ");
      IF INCHWL≠"" THEN DONE "LOOP1" ELSE
    OUTSTR("Next section coming up."&CRLF); END;
  END "LOOP1";
CLOSE(CHAN1); CLOSE(CHAN3); CLOSE(CHAN4);

END "PLOT";
OUTSTR(
"This program allows one to hear a file, to open a new file (with extention .say),"
 &CRLF&TB&
"adding the new file name to the list (in sixbit) in file KILIST.SIX"
 &CRLF&TB&
"and to edit into this new file selected portions of the original file."
&CRLF&LF);


OUTSTR("A space only as old name is taken to mean LISTEN.TMP"&CRLF
  &"A ? will cause the list in KILIST.SIX to be typed"&CRLF
      &"A CR only terminates the session"&CRLF);
CHAN1←1; CHAN2←2; CHAN3←3; CHAN4←4;
START_CODE MOVE 0,['325004000000]; '047000400110; END;

    CLOSE(CHAN2); OPEN (CHAN2,"DSK",'10,2,0,0,0,EOF2);
    LOOKUP(CHAN2,"KILIST.SIX[KI,ALS]",ER);
    ARRYIN(CHAN2,NAMES[0],100);

WHILE TRUE DO BEGIN "LOOP"
  OUTSTR(CRLF&"Type the old file name (with extension) ");
  ER←1; WHILE ER DO BEGIN "OLD"
    IF ( READ←INCHWL)="" THEN BEGIN CLOSE(CHAN1); CLOSE(CHAN2);
      CLOSE(CHAN3);  CLOSE(CHAN4); GOTO STOPP; END;
    IF READ=" " THEN READ←"LISTEN.TMP";

    IF READ="?" THEN BEGIN
      OUTSTR(CRLF& "The following files are listed)"&CRLF&LF);
      FOR I←0 STEP 1 UNTIL 99 DO BEGIN
        IF NAMES[I]=0 THEN DONE;
        OUTSTR(CVXSTR(NAMES[I])&".SAY"&CRLF);
        END;
      CONTINUE "LOOP";
      END;

    CLOSE(CHAN1); OPEN(CHAN1,"DSK",'10,1,1,0,0,EOF1);
    LOOKUP(CHAN1,READ,ER);
    IF ER THEN OUTSTR("File "&READ&" could not be found. "
      &CRLF&"Try again ")
    ELSE DONE;
    END "OLD";

  SAY;
  WHILE TRUE DO BEGIN "NEWN"
  OUTSTR("Now type new name"&CRLF&
      " (CR to overwrite TMP.SAY, space to skip editing ");
    IF ( READ2←INCHWL)=" " THEN CONTINUE "LOOP";
    IF READ2="" THEN BEGIN READ3←"TMP"; DONE "NEWN"; END;

    IF READ2="?" THEN BEGIN
      OUTSTR(CRLF& "The following files are listed)"&CRLF&LF);
      FOR I←0 STEP 1 UNTIL 99 DO BEGIN
        IF NAMES[I]=0 THEN DONE;
        OUTSTR(CVXSTR(NAMES[I])&".SAY"&CRLF);
        END;
      CONTINUE "NEWN";
      END;

    READ3←"";

    FOR I←0 STEP 1 UNTIL 5 DO BEGIN
      IF READ2[1 TO 1]="." THEN DONE;
      READ3←READ3&READ2[1 TO 1]; READ2←READ2[2 TO 5]; END;

    NEW←CVSIX(READ3);

    FOR I←0 STEP 1 UNTIL 99 DO BEGIN
      IF NAMES[I]=0 THEN BEGIN NAMES[I]←NEW; DONE "NEWN"; END;
      IF NAMES[I]=NEW THEN BEGIN
        OUTSTR("New name already has been used"
         &CRLF&"Space bar to try again or CR to overwrite  "&CRLF);
        IF INCHWL="" THEN DONE "NEWN";
        DONE;
        END;
      END;
    END "NEWN";

  NEWNAM←READ3&".SAY";
  OUTSTR("New name is to be "&NEWNAM&CRLF);
  CLOSE(CHAN4); OPEN(CHAN4,"DSK",'10,0,2,0,0,0);
  ENTER(CHAN4,NEWNAM,0);

  PLOT;


  CLOSE(CHAN2); OPEN(CHAN2,"DSK",'10,0,2,0,0,0);
  ENTER(CHAN2,"KILIST.SIX[KI,ALS]",0);
  ARRYOUT(CHAN2,NAMES[0],100);
  CLOSE(CHAN2);
  
  WHILE TRUE DO BEGIN
      READ←NEWNAM; 
      OUTSTR(READ&" says-"&CRLF);  SAY;
      OUTSTR("Space bar to repeat, CR for next file ");
      IF INCHWL ≠" " THEN DONE;
      END;

  END "LOOP";
  OUTSTR("Program terminating"&CRLF);

START_CODE MOVE 0,['325000000000]; '047000400110; END;
STOPP:


RELEASE(CHAN1); RELEASE(CHAN2); RELEASE(CHAN3);
RELEASE(CHAN4);
END "EDIT";